package com.mbengue.corp.artisan.vue.fenetre;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import org.jdesktop.swingx.JXDatePicker;

import com.mbengue.corp.artisan.controleur.Controleur;

public class ChercherFeuille extends JFrame {
  private static final long serialVersionUID = -7732931740707556521L;
  private final JComboBox typeFeuille;
  private JTextField numero;
  private JComboBox clients;
  private JXDatePicker dateDebut;
  private JXDatePicker dateFin;
  private final JButton rechercher;
  private final JButton annuler;

  public ChercherFeuille(String typeR, Controleur controleur) {
    super("Rechercher Facture/Devis par: " + typeR);
    this.setSize(400, 300);
    this.setLocationRelativeTo(null);

    this.annuler = new JButton("Annuler");
    this.rechercher = new JButton("Rechercher");
    this.typeFeuille = new JComboBox(new String[] { "Facture", "Devis" });
    JPanel panneauType = new JPanel();
    JLabel labelType = new JLabel("Choisissez un type de Feuille (Facture ou Devis)");
    panneauType.add(labelType, BorderLayout.NORTH);
    panneauType.add(this.typeFeuille, BorderLayout.SOUTH);
    this.getContentPane().add(panneauType, BorderLayout.NORTH);

    this.construireVue(typeR, controleur);
    this.ajouterEcouteurs();
    JPanel panneau = new JPanel();
    panneau.add(this.rechercher, BorderLayout.WEST);
    panneau.add(this.annuler, BorderLayout.EAST);
    this.getContentPane().add(panneau, BorderLayout.SOUTH);
    this.setVisible(true);
  }

  private void construireVue(String typeR, Controleur controleur) {
    JPanel panneau = new JPanel();
    if (typeR.equals("Numero")) {
      this.numero = new JTextField(30);
      panneau.add(new JLabel("Saisissez le numéro de la facture ou du devis"), BorderLayout.NORTH);
      panneau.add(this.numero, BorderLayout.SOUTH);
      this.getContentPane().add(panneau, BorderLayout.CENTER);
    } else if (typeR.equals("Client")) {
      String[] noms = controleur.tousLesNomsClients();
      panneau.add(new JLabel("Choisissez un client dans la liste déroulante"), BorderLayout.NORTH);
      this.clients = new JComboBox(noms);
      panneau.add(this.clients, BorderLayout.SOUTH);
      this.getContentPane().add(panneau, BorderLayout.CENTER);
      this.typeFeuille.setEnabled(false);
    } else if (typeR.equals("Date")) {
      panneau.add(new JLabel("Choisissez une date de début et/ou une date de fin"), BorderLayout.NORTH);
      JPanel debut = new JPanel();
      JLabel dateDebutLabel = new JLabel("Date Début");
      this.dateDebut = new JXDatePicker();
      debut.add(dateDebutLabel, BorderLayout.WEST);
      debut.add(this.dateDebut, BorderLayout.EAST);
      JPanel fin = new JPanel();
      this.dateFin = new JXDatePicker();
      JLabel dateFinLabel = new JLabel("Date Fin");
      fin.add(dateFinLabel, BorderLayout.WEST);
      fin.add(this.dateFin, BorderLayout.EAST);
      panneau.add(debut, BorderLayout.CENTER);
      panneau.add(fin, BorderLayout.SOUTH);
      this.getContentPane().add(panneau, BorderLayout.CENTER);
    }
  }

  private void ajouterEcouteurs() {
    this.annuler.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
        dispose();
        setVisible(false);
      }
    });
  }

  public JTextField getNumero() {
    return numero;
  }

  public JButton getAnnuler() {
    return annuler;
  }

  public JButton getRechercher() {
    return rechercher;
  }

  public JComboBox getClients() {
    return clients;
  }

  public JXDatePicker getDateDebut() {
    return dateDebut;
  }

  public JXDatePicker getDateFin() {
    return dateFin;
  }

  public JComboBox getTypeFeuille() {
    return typeFeuille;
  }
}
